我学习bash,与命令行参数混淆

时间:2015-10-21 04:29:16

标签: linux bash

我需要创建一个脚本,允许传递命令行参数并检查它是否作为运行脚本的目录中的目录存在。如果它确实列出了内容并且它是否没有打印错误信息。 所以在命令行我应该键入./check.sh test(现有目录) 并且脚本应该运行。现在我不明白如何使用应该是1美元的测试。在脚本中我想要1美元并在现有目录中检查它。但是,如果我做了类似的事情:

#!/bin/bash
DIR=$1
cd DIR
ls

它不起作用,因为DIR没有采取参数(在这种情况下测试) 我知道我需要使用if-else块,但我不明白如何获取我需要的信息。请有人帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

我觉得你想要像

这样的东西
#!/bin/bash
DIR="$1"
#test if $DIR is a directory.
if [ -d "$DIR" ]; then
    cd "$DIR"
    ls
fi

或者,您可以在整个过程中使用$1(它比$ DIR短,我更愿意使用env来搜索bash - 它不是&#39 ; t总是/bin/bash)。

#!/usr/bin/env bash
if [ -d "$1" ]; then
    cd "$1"
    ls
fi