при попытке заставить follwoing управлять для поиска полной прекрасной работы имени правильно, но я не могу на данный момент.
Команда я использую для поиска файла "Листа*":
PathFileIN_Elab=/root/Testms/Files
ChkFileName="$(ls -1 -f $PathFileIN_Elab/"$line"* |xargs basename)"
[ -f "${ChkFileName}" ] && echo "File exist"; echo "Err: $?"; NomeFil="${ChkFileName}" || echo "File does not exist"; echo "Err: $?"
echo ValNomeFileFullExt: "${ChkFileName}"
Результат, когда файл "Листа* "существует:
Допустите ошибку: 1
Допустите ошибку: 0
ValNomeFileFullExt: Lista.txt
++ Я не вижу, что какой-либо из моих echos для файла существовать или не, но код возврата "допускает ошибку" для обоих случаев... почему?
Результат, когда файл "Листа*" не существует:
ls: impossibile accedere/root/Testms/Files/Lista*: Никакое такое базовое имя файла или каталога: недостающий операнд
Usare 'базовое имя - помогают' на ulteriori informazioni.
Допустите ошибку: 1
Допустите ошибку: 0
ValNomeFileFullExt:
++ никакие echos для файла не существуют или не + код возврата как прежде плюс сообщение базового имени
То, что я пытаюсь сделать, должно иметь хорошую проверку имени файла (если существуют с расширением или не), и установите его как var, в котором я буду нуждаться после той проверки, и таким образом:
a) Таким образом, если файл существует, я установил var с полным именем: $ NomeFil =" {ChkFileName}"
b) если бы файл не существует, я хотел бы выполнить команду (ny теперь в тесте, это - просто эхо).
Кто-то может помочь мне? я являюсь новым на сценариях удара.
Заранее спасибо.
При использовании соответствия можно ожидать нуль, или больше огрызается, таким образом, хорошо использовать a for
цикл для тестирования одного объекта за один раз или это повредит Ваш -f
тестовый оператор.
#!/bin/bash
shopt -s nullglob
a="Lista*"
b="/root/Testms/Files/$a"
for c in $b; do
[[ -f $c ]] && { d=1; break; }
done
[[ $d ]] && { echo File exists; \
echo ValNomeFileFullExt: $(basename "$c"); } || \
echo File does not exists