![](/img/trans.png)
[英]Docker: bash script works when run from terminal, but command not found error when run as entrypoint
[英]Run command from current terminal in bash script
我想发出一个当前外壳中可用的命令(我从中运行bash脚本)。 就像现在一样,如果我将uecap命令原样放在bash脚本中。 脚本失败,原因是找不到uecap命令。
尽管如果我直接从当前shell发出uecap命令,它也可以正常工作。
我当前的shell在一个单独的进程中,它是自己的进程ID。
这是我的bash shell作为示例:
#!/bin/sh
while read i
do
cid=`echo "$i" | cut -b1`
rid=`echo "$i" | cut -b9-18`
rm -rf $1_TEMP
uecap -r rid -c cid
done < $1ID.log
我运行bash脚本的方式是发出以下命令:
!./bashscript $node.
同样,有没有一种方法可以使用bash脚本中的另一个进程来运行命令?
您可能已经回答了自己的问题。 由于uecap是一个别名,因此它不会导出到您的交互式shell发出的进程中,并且您不能强制外壳将其导出,因为对于别名,没有export
命令。
您可以做的是创建一个包含该别名定义的文件,然后从脚本中获取比该文件更原始的文件,如下所示:
alias uecap > ~/tmp/uecap_alias
在shell脚本中
source ~/tmp/uecap_alias
...
uecap -r rid -c cid
您也可以尝试通过环境变量传递uecap别名定义,例如
UECAP_ALIAS="$(alias uecap)" ./your_shell_script
并在脚本中
eval "$UECAP_ALIAS"
...
uecap ...
但是请注意, eval "$VAR"
在空白,引号和怪异符号上非常脆弱,因此应格外小心,并且只有在100%确定要eval
(例如SQL注入和一样)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.