Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash脚本中从当前终端运行命令_Bash_Shell_Unix - Fatal编程技术网

在bash脚本中从当前终端运行命令

在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

我想在当前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-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 ...