Во-первых, , оценка
злая, особенно когда это не необходимо. В вашем случае оценка
является не необходимый!
Замените кодирующий ужас, с которым вы показали просто:
ls | head -1
и включать его в ваше испытательное заявление:
if [[ $(ls | head -1) = "arguprog.sh" ]]; then echo "TRUE"; else echo "FALSE"; fi
Но это неправильно и сломано (см. ниже).
Теперь что-то более общее: не разбирают продукцию ls
. Если вы хотите найти первый файл (или справочник или...) в вашем нынешнем директоре, используйте шарики и этот метод:
shopt -s nullglob
files=( * )
# The array files contains the names of all the files (and directories...)
# in the current directory, sorted by name.
# The first one is given by the expansion of "${files[0]}". So:
if [[ "${files[0]}" = "arguprog.sh" ]]; then echo "TRUE"; else echo "FALSE"; fi
Заметьте, что ваш метод, разбирая ls
является неправильно . Посмотрите:
$ # Create a new scratch dir
$ mkdir myscratchdir
$ # Go in there
$ cd myscratchdir
$ # touch a few files:
$ touch $'arguprog.sh\nwith a newline' "some other file"
$ # I created 2 files, none of them is exactly arguprog.sh. Now look:
$ if [[ $(ls | head -1) = "arguprog.sh" ]]; then echo "TRUE"; else echo "FALSE"; fi
TRUE
$ # HORROR!
Есть искривленные искусственные приемы для этого, но действительно, лучший метод - тот, который я просто дал вам.
Договорились!