从shell脚本

时间:2018-02-19 06:27:19

标签: bash shell variables history

这是我的问题,如果我键入以下内容,请从控制台

var=`history 1`
echo $var

我得到了所需的输出。但是当我在shell脚本中执行相同操作时,它没有显示任何输出。此外,对于pwdls等其他命令,脚本会显示所需的输出而不会出现任何问题。

3 个答案:

答案 0 :(得分:0)

由于变量的值包含空格,请在其周围添加引号。

E.g:

var='history 1'
echo $var

答案 1 :(得分:0)

我相信你所需要的只是如下:

1-向用户询问用户需要在脚本中打印history的号码。

2-运行脚本并从用户获取输入并获得如下输出:

cat get_history.ksh
echo "Enter the line number of history which you want to get.."
read number

if [[ $# -eq 0 ]]
then
        echo "Usage of script: get_history.ksh number_of_lines"
        exit
else
        history "$number"
fi

添加逻辑,如果传递的参数数量为0,它将检查参数,然后它将从脚本退出。

答案 2 :(得分:0)

默认情况下,history在脚本中处于关闭状态,因此您需要将其打开:

set -o history
var=$(history 1)
echo "$var"

请注意$( )的首选用法,而不是弃用的反引号。

但是,这只会查看当前进程的历史记录,即这个shell脚本,因此它没有用处。