ksh中包含变量的命令调用

本文探讨了在Shell脚本中使用变量存储命令并进行解析时遇到的问题,尤其是在不同环境下的兼容性和错误处理方面。通过对比两种不同的实现方式,详细解释了如何避免解析错误,并给出了正确的实践建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当一个含有变量a的命令存储在某个变量b中时, 利用$($b)时有可能会报错。如下面的代码,有时可以成功执行,有时会发生“ipcs|grep xxx can not be found"的错误。

IFS=" " if isLinux then IPCSCMD="ipcs" else IPCSCMD="ipcs|grep $LOGNAME" fi for Eachline in $($IPCSCMD) do IFS=" " # Space # Handle IPCs ... done

究其根源,应该是对IPCSCMD的解析出了问题。将代码改为下面的形式,就可以正确执行了。注意IFS的变化——改成下面的形式后必须将循环内的IFS改为Space和Tab。

IFS=" " if isLinux then ipcs else ipcs|grep $LOGNAME fi | while read Eachline do IFS=" " # Space and tab # Handle IPCs ... done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值