为什么这个bash脚本没有改变路径?

时间:2018-06-07 06:31:59

标签: bash

我写了一个基本脚本,它将目录更改为特定路径并显示文件夹列表,但我的脚本显示了我脚本所在的当前文件夹的文件列表,而不是我在脚本中指定的文件。

这是我的剧本:

#!/bin/bash
v1="$(ls -l | awk '/^-/{ print $NF }' | rev | cut -d "_" -f2 | rev)"
v2=/home/PS212-28695/logs/
cd $v2 && echo $v1

有人知道我做错了吗?

1 个答案:

答案 0 :(得分:3)

你当前的剧本没有任何意义。 v1变量不是一个按预期执行的命令,但由于$()语法,它在分配时实际上是ls -t输出而且是为什么你有当前目录中的文件,因为这是你特定时刻的工作目录。所以你应该做普通的

ls -t /home/PS212-28695/logs/

修改

  

它运行但是如果我需要将ls -t输出存储到变量

然后这是你已经拥有的相同语法,但有适当的参数:

v1=$(ls -t /home/PS212-28695/logs/)
echo ${v1}

如果您出于任何原因cd,那么您必须执行之前设置v1,原因与上述相同。