mik*_*ike 5 linux scripting hard-link filenames
我正在编写一个名为的函数restore
,它将文件从备份目录复制到当前目录。我现在需要创建一个硬链接来恢复,以便它可以被称为purge
. 我将如何实现它以便我可以在将恢复称为清除时使用该if
语句if [ "$0" = "purge" ]
?
这是我的代码,虽然我会缩短它,因为我已经测试过它(它有效):
restore(){
if [ "$1" = "-p" ] || [ "$0" = "purge" ]; then
while [ ! ]
do
#Purge code, etc...
done
elif [ "$1" != "-p" ]; then
select fname in $(find /$HOME/Backup -name "$1*" | sed 's!.*/!!' | sed 's!$1!!') quit
do
#If restore is called with an argument code...
done
local newfname=$(echo "$fname"|sed -E 's/[0-9]{11}$//')
cp -i "/$HOME/Backup/$fname" "$newfname"
exit 0
fi
while [ ! ]
do
fname=""
select fname in $(ls /$HOME/Backup) quit
do
#Restore with no arguments code...
done
local newfname=$(echo "$fname"|sed -E 's/[0-9]{11}$//')
cp -i "/$HOME/Backup/$fname" "$newfname"
done
}
Run Code Online (Sandbox Code Playgroud)
使用该-p
选项调用 restore 与调用 restore as purge 相同。那么我将如何实现代码以便可以通过使用清除来调用恢复?
它应该是一个脚本而不是一个函数。我做了一个到Restore.sh
named的硬链接Purge.sh
,但是当我使用 ./Purge.sh 调用它时,它仍然运行标准的恢复代码。如何确定硬链接文件是否调用了恢复?
这会是作弊吗?在您的恢复脚本中,您仍然拥有您的-p
逻辑,然后您创建一个单独的清除功能,如下所示:
purge () { /path/to/restore.sh -p "$@"; }
Run Code Online (Sandbox Code Playgroud)
在您的恢复脚本中,您应该将它的函数包装器取出来,否则我相信它本质上只是来源而不是执行。
做硬链接到restore.sh
:
ln restore.sh link_to_restore.sh
Run Code Online (Sandbox Code Playgroud)
restore.sh
文件内容:
#!/bin/bash
if [ "$0" = "./link_to_restore.sh" ]; then
echo foo
elif [ "$0" = "./restore.sh" ]; then
echo bar
fi
Run Code Online (Sandbox Code Playgroud)
$ ./restore.sh
bar
$ ./link_to_restore.sh
foo
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
399 次 |
最近记录: |