在bash脚本中从当前终端运行命令
我想在当前shell(运行bash脚本的地方)中发出一个可用的命令。如果我将uecap命令按原样放在bash脚本中,现在就是这样。脚本失败,原因是找不到uecap命令 虽然如果我直接从当前shell发出uecap命令,它可以正常工作 我当前的shell位于一个单独的进程上,它有自己的进程id 以下是我的bash shell示例:在bash脚本中从当前终端运行命令,bash,shell,unix,Bash,Shell,Unix,我想在当前shell(运行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
#!/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脚本中的另一个进程运行命令?您可能刚刚回答了自己的问题。由于uecap是一个别名,因此它不会导出到交互式shell发布的进程中,并且您不能强制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%确定要执行的操作时(想想SQL注入等)。什么是uecap
,它驻留在哪里?它驻留在另一个进程中。这是一个与另一个shell进程相关的特殊命令。我从这个shell运行bash脚本。不确定这是否会解决歧义,但可以将其视为telnet进入路由器,然后从那里运行bash脚本。我可以运行bash脚本(驻留在服务器中),但我不确定如何在我的bash脚本中使用telnet命令。如果您打算以其他用户的身份运行命令,您可以使用Hi-bansi希望这澄清了我试图做的事情是的,uecap命令是一个别名。
eval "$UECAP_ALIAS"
...
uecap ...