如果我这样调用脚本:
myScript.sh -a something -b anotherSomething
在我的脚本中是否有办法获取调用脚本的命令?
在我尝试使用的第一行的脚本中:
lastCommand=!!
echo $lastCommand
但结果总是为空。
如果我echo !!
打印到控制台的唯一内容是!!
,但是如果我执行echo !!
,则从命令行开始,我会打印最后一个命令。
我也试过了:
echo $BASH_COMMAND
但我在这里也是空的。是因为脚本是在子shell中调用的,因此没有先前的命令存储在子shell的内存中吗?
答案 0 :(得分:2)
调用脚本的完整命令是"$0" "$@"
,即命令本身后跟引用的所有参数。这可能不是运行的确切命令,但如果脚本是幂等的,则可以运行它以获得相同的结果:
$ cat myScript.sh
#!/usr/bin/env bash
printf '%q ' "$0" "$@"
printf '\n'
$ ./myScript.sh -a "foo bar" -b bar
./myScript.sh -a foo\ bar -b bar
答案 1 :(得分:0)
这是我的脚本myScript.sh
#!/bin/bash
temp=`mktemp`
ps --pid $BASHPID -f > $temp
lastCommand=`tail -n 1 $temp | xargs | cut -d ' ' -f 8-`
rm $temp
echo $lastCommand
或
#!/bin/sh
last=`cat /proc/$$/cmdline | xargs -0`
echo $last