My bash script получает имя файла (или относительный путь) в виде строки, но затем должен читать из этого файла. Я могу читать только из имени файла, если объявить его как литерал непосредственно в script (без кавычек)... что невозможно для аргументов, так как они неявно начинаются с начала. Обратите внимание:
a="~/test.txt"
#Look for it
if [[ -a $a ]] ; then
echo "A Found it"
else
echo "A Error"
fi
#Try to use it
while read line; do
echo $line
done < $a
b='~/test.txt'
#Look for it
if [[ -a $b ]] ; then
echo "B Found it"
else
echo "B Error"
fi
#Try to use it
while read line; do
echo $line
done < $b
c=~/test.txt
#Look for it
if [[ -a $c ]] ; then
echo "C Found it"
else
echo "C Error"
fi
#Try to use it
while read line; do
echo $line
done < $c
ДОХОДНОСТЬ:
A Error
./test.sh: line 10: ~/test.txt: No such file or directory
B Error
./test: line 12: ~/test.txt: No such file or directory
C Found it
Hello
Как указано выше, я не могу передать аргумент командной строки в описанные выше процедуры, так как я получаю то же поведение, что и в цитированных строках.