Команда Cat с переменной в имени файла не работает

Я хочу просмотреть или прочитать содержимое файла с указанием абсолютного пути, который содержит переменную, но она не работает ..

Ни одна из приведенных ниже команд не работает.
($line здесь имя файла)

content=`(cat /tmp/cygwin/cygwin/home/67642360/1.0.94/db/src/sql/oracle/updates/${line})`

cat '/tmp/cygwin/cygwin/home/67642360/1.0.94/db/src/sql/oracle/updates/'${line}
1
задан 21 July 2019 в 07:48

3 ответа

Переменное присваивание от кошки:

content=$(cat /tmp/cygwin/cygwin/home/67642360/1.0.94/db/src/sql/oracle/updates/${line})
# Or
content=`cat /tmp/cygwin/cygwin/home/67642360/1.0.94/db/src/sql/oracle/updates/${line}`

кошка файл от переменной:

cat /tmp/cygwin/cygwin/home/67642360/1.0.94/db/src/sql/oracle/updates/${line}
# OR
cat "/tmp/cygwin/cygwin/home/67642360/1.0.94/db/src/sql/oracle/updates/${line}"
0
ответ дан 7 December 2019 в 19:27

Что ${line}?

Можно ли попробовать echo ${line}?

Какую оболочку Вы используете? Можно установить line быть именем правильного файла. Я использую, избивают этот пример.

foo$ echo ${line}

foo$ echo "Hello World" > /tmp/foo.txt 
foo$ export line=foo.txt
foo$ echo ${line}
foo.txt
foo$ cat /tmp/${line}
Hello World
foo$ 
0
ответ дан 7 December 2019 в 19:27

Если, поскольку Вы говорите, что $line содержит название файла, который Вы хотите произвести, Вы можете просто cat (или more или less) переменная. как в cat $line

Более безопасный метод, который работал бы, даже если бы имя файла включает пробелы, был бы cat "$line"

Необходимо обеспечить, чтобы Вы знали различие между полными и относительными путями, поскольку Вы, вероятно, не получите результаты, которые Вы хотите, если Вы путаете два.

0
ответ дан 7 December 2019 в 19:27

Другие вопросы по тегам:

Похожие вопросы: