Bash中无法将多条命令赋值给单个变量执行的问题求助
变量执行多命令失败的原因与解决办法
问题原因
当你用"$cmd"执行变量内容时,bash会把整个字符串当作单个完整的命令名来解析,不会识别其中的分号;作为命令分隔符。所以输入id ; date后,它会去查找名为id ; date的命令,自然找不到,就会报错。
解决办法
用eval命令重新解析变量内容,让bash识别其中的元字符(比如分号、管道符等):
read -ep "command: " cmd ; eval "$cmd"
输入id ; date后,eval会把变量内容拆成两条独立命令依次执行,就能得到预期结果。
⚠️ 注意:这种方式存在安全风险,如果允许不可信用户输入命令,可能会执行破坏性操作,使用时要谨慎。
内容的提问来源于stack exchange,提问作者raphael
相关产品推荐
相关产品推荐

