String UNIX-设置包含其他变量的字符串变量

String UNIX-设置包含其他变量的字符串变量,string,bash,shell,unix,sed,String,Bash,Shell,Unix,Sed,在UNIX shell脚本中将变量设置为正确的字符串时遇到问题。这是我的代码($1是文件名): 当$lineCount为270时,输出只是一个新行。也就是说,$name未打印或未计算 如果$lineCount为270,我希望输出为 sed-n-e273p-e273q filename.txt 它基本上打印filename.txt的第273行 谢谢你的时间 $nameIndexp和$nameIndexq看起来像是唯一的变量名,因此需要使用${name}语法,即 ${nameIndex}p 及 将

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

当$lineCount为270时,输出只是一个新行。也就是说,$name未打印或未计算

如果$lineCount为270,我希望输出为
sed-n-e273p-e273q filename.txt
它基本上打印filename.txt的第273行


谢谢你的时间

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

${nameIndex}p

将变量名与纯文本分开

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

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

${nameIndex}p

将变量名与纯文本分开

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

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

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

您可以在
bash
中进行数学运算,而不必像这样使用
bc

nameIndex=$(($lineCount+3))

您可以在
bash
中进行数学运算,而不必像这样使用
bc

nameIndex=$(($lineCount+3))

它与问题
kfsone
是正确的
“${nameIndex}p”
是更好的方法与问题
kfsone
是正确的
“${nameIndex}p”
是更好的方法,最好不要使用反向tics。不确定为什么将原始括号的一行改为反勾号,而不是另一行。使用:
nameIndex=$(echo“$lineCount+3”| bc)
最好不要使用back tics。不确定为什么将原始括号的一行改为反勾号,而不是另一行。用法:
nameIndex=$(echo“$lineCount+3”| bc)
lineCount
不可能是浮点值,因此可以使用
nameIndex=$((lineCount+3))
而不是调用外部
bc
程序。
lineCount
不可能是浮点值,因此可以使用
nameIndex=$((lineCount+3))
而不是调用外部
bc
程序。