if [ -f $1 ];then echo "该文件,存在" ls -l $1 else echo "没有该文件" fi
时间: 2024-05-25 18:14:55 浏览: 155
这是一个 Bash 脚本,用于检查指定的文件是否存在。
脚本的第一行 `if [ -f $1 ]; then` 意思是:如果 `$1`(也就是第一个传入的参数)是一个存在的文件,那么执行下面的语句块。`-f` 表示判断文件是否存在。
如果文件存在,就会输出 `"该文件,存在"`,然后列出文件的详细信息,通过 `ls -l $1` 来实现。
如果文件不存在,就会输出 `"没有该文件"`。
注意,这个脚本需要在命令行中传入一个文件名作为参数,例如 `./check_file.sh myfile.txt`。其中 `check_file.sh` 是脚本的文件名,`myfile.txt` 是要检查的文件名。
相关问题
if [ $# -eq 0 ] ;then echo "未输入任何参数,请输入参数" echo "用法:$0 [文件名|目录名]" fi if [ -f $1 ];then echo "该文件,存在" ls -l $1 else echo "没有该文件" fi if [ -d $1 ];then echo "该目录,存在" ls -ld $2 else echo "没有该目录" fi为啥我没有给任何参数也会往下继续执行判断
这是因为在你的代码中,判断是否输入参数的语句和后面的判断文件或目录是否存在的语句是分开的,没有连续的逻辑判断。当你没有输入参数时,第一个条件 `$# -eq 0` 是成立的,就会执行后面的语句。
你可以将这两个判断语句合并,使用 `elif` 来实现连续的逻辑判断,如下所示:
```bash
if [ $# -eq 0 ]; then
echo "未输入任何参数,请输入参数"
echo "用法: $0 [文件名|目录名]"
elif [ -f $1 ]; then
echo "该文件存在"
ls -l $1
elif [ -d $1 ]; then
echo "该目录存在"
ls -ld $1
else
echo "不存在该文件或目录"
fi
```
这样,当你没有输入参数时,就会直接输出提示信息,不会执行后面的判断语句。如果输入的参数既不是文件也不是目录,则会输出提示信息 "不存在该文件或目录"。
set -e shopt -s nocasematch function process_debug_scripts { if [[ -d $1 ]]; then for filename in `ls $1` do sed -e "s@ZZZZZZ@$BUILD_ROOT@g" -e "s@WWWWWW@$WORKSPACE@g" \ "$1/$filename" \ > "$BUILD_ROOT/$filename" #For ARMCYGWIN, we have to change /cygdrive/c to c: if [[ $TARGET_TOOLS == RVCT31CYGWIN ]] then mv "$BUILD_ROOT/$filename" "$BUILD_ROOT/$filename"_temp sed -e "s@/cygdrive/\(.\)@\1:@g" \ "$BUILD_ROOT/$filename"_temp \ > "$BUILD_ROOT/$filename" rm -f "$BUILD_ROOT/$filename"_temp fi done fi } # # Setup workspace if it is not set # if [ -z "${WORKSPACE:-}" ] then echo Initializing workspace export EDK_TOOLS_PATH=`pwd`/BaseTools source edksetup.sh BaseTools else echo Building from: $WORKSPACE fi if [[ ! -e $EDK_TOOLS_PATH/Source/C/bin ]]; then # build the tools if they don't yet exist echo Building tools: $EDK_TOOLS_PATH make -C $EDK_TOOLS_PATH else echo using prebuilt tools fi TARGET=DEBUG for arg in "$@" do if [[ $arg == RELEASE ]]; then TARGET=RELEASE fi done mkdir -p ./Build
这段脚本的作用是设置一些环境变量并构建工具。首先,它会检查是否设置了`WORKSPACE`环境变量,如果没有设置,则初始化工作空间并设置`EDK_TOOLS_PATH`环境变量。然后,它会检查是否已经构建了工具,如果没有则构建工具。最后,它会根据传入的参数设置目标类型,如果参数中包含"RELEASE",则目标类型为RELEASE,否则为DEBUG。最后,它会创建一个名为"Build"的目录。
阅读全文