2013-04-13 3 views
4

Скажем, у меня есть файл file.txt с данными (скажем, «100») в нем. Я хочу прочитать содержимое этого файла переменной для будущей обработки. Я хочу, чтобы это работало как на Linux, так и на Solaris. Как я могу это сделать?Могу ли я хранить содержимое файла в переменной в сценарии оболочки?

ответ

8

Попробуйте эту строку:

VAR=$(cat file.txt) 

или

VAR=$(head -1 file.txt) 

EDIT 1:

Используя вывод Unix команды для установки переменных

Одна из лучших вещей о сценариях командной оболочки является то, что это очень легко использовать любую команду Unix для создания выходного сигнала и использовать его для установите переменную.

В этом примере, я бег команды даты и сохранение ее вывода в качестве значений для моих переменных:

#!/bin/sh 
# 
STARTED=`date` 
sleep 5 
FINISHED=`date` 
# 
echo "Script start time: $STARTED" 
echo "Script finish time: $FINISHED" 

Если я запускаю этот простой сценарий, я вижу следующее:

ubuntu$ /tmp/1.sh 
Script start time: Wed May 7 04:56:51 CDT 2008 
Script finish time: Wed May 7 04:56:56 CDT 2008 

Тот же подход может использоваться практически для любого сценария.

так ответ МВП будет работает на любой оболочке UNIX:

F=`cat file.txt` 

Просто попробуйте с кавычкой ` не ' одного qoute

+0

Я пробовал выше 2. Он не работает на солнечных батареях. Он дает синтаксическую ошибку – Ajit

+0

Что такое интерпретатор оболочки: sh, bash, csh или ksh? – pylover

+0

интерпретатор оболочки sh – Ajit

4

Это должно работать:

VAR=`cat file.txt` 

Если вы хотите получить только первую строку файла, используйте:

VAR=`head -1 file.txt` 
+1

Я пробовал вышеуказанные cmds, но он не работает. – Ajit

+0

VAR = 'cat file.txt echo $ var выше выходов cat file.txt – Ajit

+4

Убедитесь, что вы используете обратную ссылку, а не '' '. Если не уверен, скопируйте и вставьте его - он работает – mvp

3

Пытались ли вы следующие

VAR=$(<file) 

Он работал, когда Мне нужна вторая строка в двухстрочном файле для хранения в качестве переменной в bash.

Смежные вопросы