UNIX - 使用其他变量设置字符串变量

时间:2013-11-19 06:35:02

标签: string bash shell unix sed

我无法在UNIX shell脚本中将变量设置为正确的字符串。这是我的代码($ 1是文件名):

nameIndex=$(echo "$lineCount+3" |bc);
name=$(sed -n -e "$nameIndexp" -e "$nameIndexq" $1);
echo "$name";

当$ lineCount为270时,输出只是一个新行。也就是说,$ name不会被打印或不被评估。

如果$ lineCount是270,我想要输出 sed -n -e 273p -e 273q filename.txt 它基本上打印了filename.txt的第273行

感谢您的时间!

3 个答案:

答案 0 :(得分:4)

$nameIndexp$nameIndexq看起来像唯一的变量名,因此您需要使用${name}语法,即

${nameIndex}p

${nameIndex}q

将变量名称与纯文本分开。

nameIndex=$(echo "$lineCount+3" |bc)
name=$(sed -n -e "${nameIndex}p" -e "${nameIndex}q" $1)
echo "$name"

答案 1 :(得分:1)

您可以在bash中进行数学运算而不使用bc,如下所示:

nameIndex=$(($lineCount+3))

答案 2 :(得分:0)

试试这个:

nameIndex=`echo "$lineCount+3" |bc`
par=$1
name=$(sed -n -e "$nameIndexp" -e "$nameIndexq" $par)
echo "$name"