我无法在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行
感谢您的时间!
答案 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"