有人可以解释这段代码意味着什么吗?
我相信第二行是"如果退出状态为零",则回显"有效命令",但我不理解第一行
$@ &>/dev/null
if [[ $? = 0 ]]
then
echo "Valid command"
fi
Run Code Online (Sandbox Code Playgroud) 我正在尝试执行以下任务:编写一个名为shell的脚本changedir,该脚本采用目录名,命令名和(可选)一些其他参数.然后,脚本将更改为指示的目录,并执行使用提供的参数指示的命令.
这是一个例子:
$ sh changedir /etc ls -al
Run Code Online (Sandbox Code Playgroud)
这应该更改为/etc目录并运行命令ls -al.
到目前为止,我有:
#!/bin/sh
directory=$1; shift
command=$1; shift
args=$1; shift
cd $directory
$command
Run Code Online (Sandbox Code Playgroud)
如果我运行上面的内容,就像sh changedir /etc ls它更改并列出目录.但是,如果我添加参数,ls它不起作用.我需要做些什么来纠正它?
我有以下shell脚本来读取文件的前三行并将它们打印到屏幕 - 它无法正常工作,因为它打印出2,3,4行而不是行1,2,3 - 我在做什么错了?
exec 6< rhyme.txt
while read file <&6 ;
do
read line1 <&6
read line2 <&6
read line3 <&6
echo $line1
echo $line2
echo $line3
done
exec 6<&-
Run Code Online (Sandbox Code Playgroud)
感谢您的回答 - 我知道head命令但是想要使用读取和文件描述符来显示前三行
我已修改此脚本以从YouTube下载歌曲但我在运行时遇到以下错误:
sh youtube2mp3.sh https://www.youtube.com/watch?v=gpOJ6iu8fqQ
Run Code Online (Sandbox Code Playgroud)
错误:
youtube2mp3.sh: line 31: [: too many arguments
youtube2mp3.sh: line 39: [: too many arguments
youtube2mp3.sh: line 49: [: too many arguments
Sorry but the system encountered a problem.
Run Code Online (Sandbox Code Playgroud)
行号指的是if [ -f $video_title.$ext1 ]三行......我认为我的论点没有,因为它在以前的版本中有效,但我仍然坚持这一点 - 有人可以解释我需要做些什么来纠正它吗?
address=$1
video_title="$(python youtube-dl $address)"
ext1="flv"
ext2="mp4"
ext3="webm"
if [ -f $video_title.$ext1 ]
then
ffmpeg -i $video_title.$ext1 "$video_title".wav
lame "$video_title".wav "$video_title".mp3
rm $video_title.$ext1 "$video_title".wav
else
if [ -f $video_title.$ext2 ]
then
ffmpeg -i $video_title.$ext2 "$video_title".wav
lame "$video_title".wav "$video_title".mp3
rm …Run Code Online (Sandbox Code Playgroud) 我刚刚开始学习如何使用git并在下面的文件上运行git diff - 我对你如何阅读输出感到有点困惑 -
根据我的理解到目前为止,下面说的是工作目录和与file01相关的索引与file02之间存在差异.有些人可以用英语解释你如何阅读这部分输出 - >@@ -1,4 +1 @@
谢谢你的帮助
diff --git a/file01 b/file01
index cc17fa4..d0a432b 100644
--- a/file01
+++ b/file01
@@ -1,4 +1 @@
-datafiles
-file01
-file02
-file03
+This is a change
diff --git a/file02 b/file02
index e69de29..552c22e 100644
--- a/file02
+++ b/file02
@@ -0,0 +1 @@
+and this is another change
Run Code Online (Sandbox Code Playgroud) 我试图删除所有出现的大写字母只在下面的字符串中使用下面的sed命令,但它只输出我输入的刺痛 - 如何正确放置替换?
echo "Dog boy Did Good" | sed 's/\([A-Z]\+\)/\1/g'
Run Code Online (Sandbox Code Playgroud) 我已经编写了这个脚本,它取一个停止和开始数字并计算其间的数字 - 无论"停止"数字是否被重新调整,我都想让它继续增加所以它一直在计数,直到ctrl + z为止按下但它没有认识到我的时间条件 - 有人可以为我纠正语法吗?
#!/bin/sh
stopvalue=$1
startvalue=$2
if [ $# -ne 2 ]
then
echo "Error - You must enter two numbers exactly - using default start value of 1"
#exit 0
fi
echo ${startvalue:=1}
while (test "$startvalue" -le "$stopvalue" || "$startvalue" -ge "$stopvalue")
do
startvalue=$((startvalue+1))
echo $startvalue
done
Run Code Online (Sandbox Code Playgroud) 我试图将所有负数转换为正数,并且到目前为止已经提出了这个问题
echo "-32 45 -45 -72" | sed -re 's/\-([0-9])([0-9])\ /\1\2/p'
Run Code Online (Sandbox Code Playgroud)
但它输出不起作用:
3245 -45 -72
我想通过使用\ 1\2我会得到正数吗?
我哪里错了?
我在下面创建了这个简单的脚本来循环访问包含用户列表的文件,并为文件中的每个用户应用配额规则。
它可以工作,但在处理过程中有时会失败,因为我相信文本文件中的大量用户有时会阻止访问。有没有办法让循环在 foreach 循环的每次迭代后或在 foreach 循环的五次迭代后暂停 5 - 10 秒,直到文件管理器完全更新这些配额,然后继续处理文件中的下一个用户?
ForEach ($adname in Get-Content "C:\Users\mick\Desktop\scripts\staff.txt")
{
Invoke-NcSsh -Command "volume quota policy rule create -vserver FS-ONE -policy-name default -volume data -type user -target $adname -qtree """" -user-mapping off -disk-limit 3GB -soft-disk-limit 2GB -threshold 3GB"
}
Start-NcQuotaResize -vserver FS-ONE -volume data
Run Code Online (Sandbox Code Playgroud) 我编写了这个小脚本来查找作为参数传递的可执行文件,例如
./testexec du ls md
Run Code Online (Sandbox Code Playgroud)
如何让脚本不输出未找到的命令 - 例如,不显示"md"命令的错误输出?
#!/bin/sh
for filename in "$@"
do
which $filename
done
Run Code Online (Sandbox Code Playgroud)