如果我想使用bash文件,我必须写这个。
。 name.bash
但是,使用'运行时,下面的bash文件不起作用。'连接。 如果我使用此命令,则立即删除该文件。 (不要搬垃圾) ex)。 trash.bash del.txt
当我问起时,他们说"。"应该删除。 但是,如果我删除'。',我会看到"命令未找到"。
我最近才学习Linux。 所以,我不知道下面的bash代码是错误的,还是不适用于'。'。
#! /bin/bash
FCnt=0
LFlag=0
PFlag=0
IFlag=0
FFlag=0
trash=~/.trash
error ()
{
cat << END
echo How to use the Recycle Bin management program :
echo trash -p : "Empty the trash"
echo trash -i : "Empty Trash (OK or No)"
echo trash -l : "Recycle bin check"
echo trash file* : "Throw in trash"
END
exit 1
}
for list in $*
do
case $list in
"-p")
PFlag=1
;;
"-i")
IFlag=1
;;
"-l")
LFlag=1
;;
"-*")
echo $list : wrong
error
;;
*)
FFlag=1
fileList[$FCnt]=$list
let FCnt=FCnt+1
;;
esac
done
let total=$LFlag+$PFlag+$FFlag+$IFlag
if (( total != 1 ))
then
error
fi
if [ ! -d $trash ]
then
'mkdir' $trash
fi
if (( LFlag == 1 ))
then
'ls' -lgF $trash
exit 0
fi
if (( PFlag == 1 ))
then
'rm' $trash/*
exit 0
fi
if (( IFlag == 1 ))
then
'rm' -i $trash/*
exit 0
fi
if ((FFlag == 1 ))
then
'mv' ${fileList[*]} $trash
exit 0
fi
exit 0
答案 0 :(得分:1)
将文件作为. name
source
脚本执行,该脚本在shell的上下文中运行,而不是作为自己的进程。这意味着它可以修改您的环境。有时这就是你想要的,有时却不是。
如果您不想要它,可以使用chmod +x name
或类似内容使脚本可执行。然后,您可以通过指定脚本的路径来执行该脚本。您始终可以提供完整的绝对路径,也可以使用相对路径,.
是当前目录,因此./name
将在当前目录中查找并运行它。或者,如果将其放在PATH
变量的其中一个目录中,shell将只按名称找到它,而不需要路径。
如果您不想使脚本可执行,您可以始终显式运行shell并告诉它处理文件,如bash name
,name
可以在当前目录或任何路径中你要运行的文件。
答案 1 :(得分:0)
#!/bin/bash
首先注意#
和!
之间没有空格。
如果您想在没有.
的情况下执行shell脚本,则需要将脚本所在的目录添加到PATH
。
sudo vim /etc/profile
export PATH="/home/xxxx/bin:$PATH"
,将/home/xxxx/bin
替换为您想要的目录。source /etc/profile
然后,如果没有错误,你可以在每个目录中执行它。