这是我的问题,如果我键入以下内容,请从控制台
var=`history 1`
echo $var
我得到了所需的输出。但是当我在shell脚本中执行相同操作时,它没有显示任何输出。此外,对于pwd
,ls
等其他命令,脚本会显示所需的输出而不会出现任何问题。
答案 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脚本,因此它没有用处。