我要编写一个脚本,当你运行它时,它会创建一个包含用户计算机详细信息的html页面......但我只有一个问题...... 如果用户将该脚本放在一个文件夹中并将其设置为cronjob,当crontab执行它时,脚本会在主目录中创建一个文件夹,这很糟糕,因为,我希望脚本使用HTML文档创建文件夹与脚本相同的目录......我该怎么办?
thnx; - )
答案 0 :(得分:0)
我通常会做以下事情:
#!/bin/bash
# sample script to change directory and save a file
WORKDIR=/home/file/n34_panda
cd $WORKDIR
echo "this "> newfile.txt
这是一个简单的答案,无需查看其余代码。说实话,最简单的方法就是添加命令:
cd /path/to/html/docs
然后,您可以添加其余代码
答案 1 :(得分:0)
从多个目录中尝试此脚本。它将始终返回其位置。
#!/bin/bash
echo ${0%/*}
答案 2 :(得分:0)
您只需将cron设置如下:
# m h dom mon dow command
* * * * * cd /path-where-you-want-to-save/ && /path/of/yourscript.sh
答案 3 :(得分:0)
正如评论中所建议的,there are ways of a script knowing what directory it is stored in。但是,我会建议一个更简单的解决方案。在脚本中使用绝对文件路径。目标目录可以是脚本的参数。这使脚本更加灵活;这意味着如果要在多个位置执行相同的任务,则不必将多个副本存储在单独的目录中。
#!/bin/bash
output_dir="$1" # first argument to the script
echo "blah blah" > "$output_dir"/filename
答案 4 :(得分:0)
如果从远程文件夹执行,则使用bash参数扩展(analyzer)从特殊变量$0
(存储脚本名称)中提取路径,否则返回当前目录({{如果从当前目录执行,则不会包含完整路径。)
$0
我正在测试特殊变量#!/bin/bash
if [[ "$0" == */* ]]; then
script_path=${0%/*}
else
script_path=$(pwd)
fi
是否包含$0
。如果是,那么使用参数扩展来截断最后/
之后的所有内容。如果它不包含/
,那么我们必须在当前目录中,因此存储/
的结果。
根据我的测试,如果执行pwd
或/pathTo/script.sh
我在Cygwin中使用GNU bash版本4.3.42进行了测试