我想运行我的自定义脚本,但每次需要执行它时,我都必须在脚本名称之前输入 bash。但我想像运行其他脚本一样运行它,ls git sed chmod例如不需要在脚本名称之前输入 bash 。
我在这里没有找到任何解决方案,但最接近的是这个Bash 脚本不执行任何操作
我创建了一个名为test
#!/bin/bash
echo Hello
Run Code Online (Sandbox Code Playgroud)
但是当我在终端上输入它时,它没有给出错误并且不打印任何内容
user@notebook:~$ test
user@notebook:~$
Run Code Online (Sandbox Code Playgroud)
但当我用 bash 键入它时它会起作用
user@notebook:~$ bash test
Hello
user@notebook:~$
Run Code Online (Sandbox Code Playgroud)
我已将文件添加到~/.local/bin/,授予它权限chmod a+x test并在我的变量~/.local/bin中设置。PATH
我的stat /bin/bash是
File: /bin/bash
Size: 1396520 Blocks: 2728 IO Block: 4096 regular file
Device: 806h/2054d Inode: 30408799 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-05-07 12:23:17.179593764 +0500
Modify: 2022-01-06 21:23:33.000000000 +0500
Change: 2022-10-08 …Run Code Online (Sandbox Code Playgroud) 有人可以帮助我吗?我需要一个 bash 脚本来播放一个短声音文件,等待 30 秒,播放另一个声音文件,再等待 30 秒。
(我会以此作为提醒,在使用电动牙刷时,在牙齿的每个象限上花费 30 秒。)
mpg123 /usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3
sleep 30
mpg123 /usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3
sleep 30
mpg123 /usr/share/sounds/My_Sounds/facility-alarm.mp3
sleep 30
Run Code Online (Sandbox Code Playgroud)
但它只播放第一个声音文件。??
是否可以选择使用cp命令将前 100 个文件从目录复制到另一个位置?如果没有还有其他方法可以做到这一点吗?我需要写脚本吗?
grep "::=BEGIN" -q < /home/erawson/bin/HP/adaptec.mib
CHK= echo $?
if ($CHK = "0") ; then
echo "failed"
else
exit
fi
Run Code Online (Sandbox Code Playgroud)
错误是:
/home/erawson/bin/try1: line 10: =: command not found
Run Code Online (Sandbox Code Playgroud) 为什么. file在 bash中使用即使它不是可执行文件也会执行文件?是因为它使用当前的 bash 会话来运行它,所以它的工作方式就像打字一样bash file?
此外,沿着类似的路线。我知道打字> file会删除文件的内容。但为什么?我知道这会将标准输入发送到文件。但是标准输入不是键盘吗?所以我不应该在理论上换一个新的路线并输入内容吗?我不明白。
我想mkdir在 shell 脚本中使用如下创建目录树。
Tutorial
?
??? abc
? |
? ??? def
?
??? pqr
??? stu
?
??? vwx
Run Code Online (Sandbox Code Playgroud)
当我在终端中运行以下命令时,
mkdir -p /home/LinuxServer/GIT/bbb/Tutorial/{abc/def,pqr/{stu,vwx}}
Run Code Online (Sandbox Code Playgroud)
然后它正在工作。
但是当我执行以下 shell 脚本时,它没有正确创建目录树
DIRECTORY_PATH="/home/LinuxServer/GIT/bbb/"
CREATE_DIRECTORY_STRUCTURE="Tutorial/{abc/def,pqr/{stu,vwx}}"
TUTORIAL_PATH="$DIRECTORY_PATH$CREATE_DIRECTORY_STRUCTURE"
mkdir -p $TUTORIAL_PATH
Run Code Online (Sandbox Code Playgroud)
你能帮我理解这个问题吗?
我在脚本中有 5 个选项,例如获取 IP 地址、可用内存、CPU 使用率、主机名和用户名。
我想做一个脚本来获取所有输出或任何人。
例如 :
如果我执行
system_info.sh -i ip -fm free -c cpu -h host -u user
Run Code Online (Sandbox Code Playgroud)
或者
system_info.sh -all all
Run Code Online (Sandbox Code Playgroud)
那么它应该给出所有的输出。
如果假设我只想要一个输出,则需要运行相同的脚本
system_info.sh -fm free
system_info.sh -fm free -i ip
Run Code Online (Sandbox Code Playgroud)
我有这个想法,但我不知道如何设置这些选项并在脚本中进行验证。
请建议我如何设置这些选项
使用 Shell 脚本查找单词“here”的出现,并且仅在这些行中,将单词“this”替换为“that”。其余所有其他行都按原样打印。
我写了一个简单的脚本:
for DIR in /etc/*; do
if [ "$DIR" == "/etc/dhcp" ]; then
echo $DIR
break
fi
done
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果我break在fi它之后使用它不会产生理想的结果。
那个脚本和这个脚本有什么区别?
for DIR in /etc/*; do
if [ "$DIR" == "/etc/dhcp" ]; then
echo $DIR
fi
break
done
Run Code Online (Sandbox Code Playgroud)