带通配符的Bash脚本

时间:2011-07-12 14:06:08

标签: bash

这是我的脚本示例:

#!/bin/bash
cd /upper/folder.test*/subfolder
ls

folder.test文件夹实际上命名为“folder.test13kwekrjk1234jk3”,它完全是随机的,所以我想使用外卡。 “Upper”文件夹在root中,我想要它,CD命令在脚本之外工作(我在根目录中执行它,就像脚本一样)

然而,当我执行时(使用./),它给了我:

“ - 没有这样的文件或目录] cd:/upper/folder.test*/subfolder”

是什么给出的?它在脚本之外工作,但它在脚本内部不起作用?我应该在脚本中以不同的方式做这个吗?

2 个答案:

答案 0 :(得分:2)

你可以这样做,因为通配符实际上是通配符,它​​们的行为难以预测且不太可靠。

FOLDER=$(ls -1 /upper/folder.test*/subfolder | head -n1);
cd "$FOLDER"
ls

答案 1 :(得分:0)

当我尝试使用"〜"来尝试cd到我的主目录时,我遇到了一个相关的问题。在bash脚本中。

此代码在终端中有效,但不在我的脚本中:

cd ~/Documents/important_folder* 

但是,以下代码在脚本中运行良好:

cd /home/my_username/Documents/important_folder*