我有一个复杂的命令,我想制作一个shell/bash脚本.我可以$1轻松地写出来:
foo $1 args -o $1.ext
Run Code Online (Sandbox Code Playgroud)
我希望能够将多个输入名称传递给脚本.什么是正确的方法呢?
当然,我想处理其中包含空格的文件名.
有人能告诉我是否应该在shell脚本中包含变量的引号?
例如,以下是正确的:
xdg-open $URL
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)
要么
xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
如何参数化在网格上执行的shell脚本(以qsub开头)?我有一个shell脚本,我使用getopts来读取参数.
当我启动(qsub script.sh -r firstparam -s secondparam ..)这个带有qsub的工作脚本时,我收到错误消息,
qsub:无效选项 - s
qsub:非法-r值
正如qsub认为参数是为自己的.但我还没有找到任何解决方案.
谢谢
我看到一些像这样的代码
SERIAL_NO="121"
if [ -z "${SERIAL_NO}" ]; then
echo -e "ERROR: serial number of the device is not provided!"
exit 1
else
Run Code Online (Sandbox Code Playgroud)
这里使用$ {SERIAL_NO}来获取SERIAL_NO变量.我想知道$ var和$ {var}之间的区别,以及为什么在这里使用$ {var}.
谢谢
%{$var}和之间有什么区别%$var?我试过这段代码,但是有错误:
每个引用都是test.pl第21行的实验.每个引用的参数类型必须是test.pl第21行的非反射hashref或arrayref.
use feature 'say';
%HoH = (
1 => {
husband => "fred",
pal => "barney",
},
2 => {
husband => "george",
wife => "jane",
"his boy" => "elroy",
},
3 => {
husband => "homer",
wife => "marge",
kid => "bart",
},
);
for ($i = 1; $i <= 3; $i++) {
while ( ($family, $roles) = each %$HoH{$i} ) {
say "$family: $roles";
}
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码运行正常:
use feature 'say';
%HoH = (
1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试下载一堆文件,并在我去的时候重命名它们.下载部分工作正常,但我不能让它重命名文件.这是我正在使用的脚本:
COUNTER=0
for (( i = 696; i <= 773; i++ ))
do
fastq-dump --split-3 --accession SRR546$i
mv SRR546"$i"_1 ./"$COUNTER"mVD_SRR546$i_1
mv SRR546"$i"_2 ./"$COUNTER"mVD_SRR546$i_2
gzip *.fastq
COUNTER=$[COUNTER + 1]
done
Run Code Online (Sandbox Code Playgroud)
这将正确下载文件SRR546696,SRR546697等,但不会重命名它们.
我也试过用:
rename 's/SRR/"$COUNTER"mVD_SRR/' *.fastq
Run Code Online (Sandbox Code Playgroud)
但这也没有做任何事.
我有一个 bash 脚本,它创建了我的文件夹的备份。它应该使用版本号命名 tar gz 文件,但它没有:
#!/bin/bash
ver='1.2.3'
tar czf $ver_myfolder.tar.gz .
Run Code Online (Sandbox Code Playgroud)
预期输出:
1.2.3_myfolder.tar.gz
实际输出:
_myfolder.tar.gz
如果我像这样附加变量:
#!/bin/bash
ver='1.2.3'
tar czf myfolder-$ver.tar.gz .
Run Code Online (Sandbox Code Playgroud)
有用