向我解释这个 shell 脚本的 2 行
Explain me 2 lines of this shell script
这是什么意思?
if [ -f / ]
这行:
cp /
/
是否代表一个文件,因为它与 -f
关联?
#!/bin/bash
if test $# -ne 2
then
echo "Numbers of argument invalid"
else
if [ -f / ]
then
echo "file already exist , replace ?"
read return
if test $return = 'y'
then
cp /
else
exit
fi
else
cp /
fi
fi
给定 2 个参数/名称(</code> 和 <code>
),这是为了确保目录 </code> 下名称为 <code>
的文件存在。如果是,则它会将 </code> 指示的本地文件复制到具有相同名称的目录 <code>
中。
但是,根据您的以下示例,它的使用方式略有不同。如果目标中不存在该文件,它会立即将文件复制到具有
指定名称的子目录中。如果该文件确实存在于目标中,它会首先提示用户它是否为 o.k。覆盖现有文件。
http://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html
./script.sh "tmp.txt" "/project"
echo = tmp.txt
echo = /project
- file name
- directory
if [ -f / ] - checks if file exists, -f for files, -d for directory
cp / - copy file to directory/file_name
if [ -f /project/tmp.txt ]
cp tmp.txt /project/tmp.txt
这是什么意思?
if [ -f / ]
这行:
cp /
/
是否代表一个文件,因为它与 -f
关联?
#!/bin/bash
if test $# -ne 2
then
echo "Numbers of argument invalid"
else
if [ -f / ]
then
echo "file already exist , replace ?"
read return
if test $return = 'y'
then
cp /
else
exit
fi
else
cp /
fi
fi
给定 2 个参数/名称(</code> 和 <code>
),这是为了确保目录 </code> 下名称为 <code>
的文件存在。如果是,则它会将 </code> 指示的本地文件复制到具有相同名称的目录 <code>
中。
但是,根据您的以下示例,它的使用方式略有不同。如果目标中不存在该文件,它会立即将文件复制到具有 指定名称的子目录中。如果该文件确实存在于目标中,它会首先提示用户它是否为 o.k。覆盖现有文件。
http://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html
./script.sh "tmp.txt" "/project"
echo = tmp.txt
echo = /project
- file name
- directory
if [ -f / ] - checks if file exists, -f for files, -d for directory
cp / - copy file to directory/file_name
if [ -f /project/tmp.txt ]
cp tmp.txt /project/tmp.txt