有时我需要执行 shell 脚本中的单个命令。
我已经知道sed -n 'line_num p'
可以打印该行。但是我怎样才能将打印出的特定行作为命令执行呢?
答案1
尝试这个:
sed -n 'line_num p' | bash
或者,如果命令不包含空格,
"$(sed -n 'line_num p')"
答案2
如果您以交互方式执行此操作,则可以将该行写入 bash 历史记录:
history -s "$(sed -n 'line_num p')"
然后按↑Enter将该行插入到readline缓冲区中,并执行;这让你有机会在为时已晚之前浏览一下这条线。
答案3
你可以做...
{ head -n"$((NUM-1))"; IFS= read -r line; } </path/to/script >/dev/null
eval "$line"
这将仅获取$NUM
shell 变量中脚本中的行$line
,然后将其评估为当前 shell 中的命令。
另一种方法可以是这样的:
</path/to/script sed "${NUM}q;d" >/tmp/"$$"
. /tmp/"$$" ; rm /tmp/"$$"
答案4
在 bash 中,您可以运行以下命令:
for line in $(cat file.txt); do command $line; done