假设我有 2 个配置文件,例如:文件 1:
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
virtual_gid_maps = static:5000
Run Code Online (Sandbox Code Playgroud)
文件2:
virtual_gid_maps = static:5000
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
Run Code Online (Sandbox Code Playgroud)
如果您仔细观察,您会看到一起有一行开头,virtua_gid_*但文件 1 将其放在文件末尾,而文件 2 将其放在文件头。
假设我有 2 个具有不同位置的相同行的文件,但位置对我来说并不重要,成为或不成为很重要。
我如何比较我的文件?
无论如何要压缩以下 UNIX 命令:
chmod 755 scriptA.ksh | chmod 755 scriptB.ksh | chmod 755 scriptC.ksh | chmod 755 scriptD.ksh
Run Code Online (Sandbox Code Playgroud)
上面的命令使每个 KornShell (ksh) 脚本都可以执行,因此压缩命令的长度会更短,并且仍然可以使每个 ksh 脚本都可以执行。
似乎无法将此评估为真
is_equal () {
in="$1"
if [[ "$in" == "385" ]]; then
return 0
else
return 1
fi
}
a= is_equal 385
if [[ "$a" ]]; then
echo "equal"
else
echo "NOT equal"
fi
$ ./equal_nums.sh
NOT equal
$
Run Code Online (Sandbox Code Playgroud) 通常,当我在 Git 中提交对子模块的更改时(如果这是唯一的更改),我会将结果提供git diff <submodule-name>给提交消息的正文(在我的 git 配置中diff.submodule设置为log)。所以消息看起来像:
Updated Core Submodule
Submodule Core eaedd3f..0721763:
< Fixed ZA-123: Crash in rendering module
< Merge 'develop' into 'master'
Run Code Online (Sandbox Code Playgroud)
我一直在尝试编写一个脚本来自动执行此操作,我可以将其绑定到我的 git 配置中的别名。要生成上面的文本,理想情况下我想运行一个命令,例如:
$ git submodule-commit Core
Run Code Online (Sandbox Code Playgroud)
这将执行以下操作(大致):
Core在本例中)git commit并提供主题行(Updated $1 Submodule,或者类似的东西,在这个例子中$1是哪里Core)。我没有运气为此编写一个简单的脚本。我对 bash / shell 脚本不是很有经验。任何人都可以帮助提供实现此目的的实现吗?
我创建了一个脚本来检查我是否安装了 Node、Npm、Bower 和 Susy,但是当我执行它时,我收到一个我无法解决的错误。
这是脚本:
isInstalled(){
command -v $1 >/dev/null 2>&1 || command -v $2 >/dev/null 2>&1 || { echo >&2 "I require $1 but it's not installed. Aborting."; return false;}
}
installNode() {
if [[ !isInstalled('node', 'nodejs') ]]; then
echo "Node is not installed. Installing..."
curl https://www.npmjs.org/install.sh | sh
fi
}
installBower()
{
if [[ !isInstalled('npm') ]]; then
echo "Npm is not installed. Installing..."
curl -L https://npmjs.org/install.sh | sh
else
echo "Npm is installed. Checcking Bower..."
if [[ !isInstalled('bower') …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行一个脚本,如:
./script.sh file
但我收到(如果我使用 txt 文件):
=: cannot open `=' (No such file or directory)
test.txt: ASCII text
Second
Run Code Online (Sandbox Code Playgroud)
如果我使用 gz 文件:
=: cannot open `=' (No such file or directory)
test.txt.gz: gzip compressed data, was "test.txt", last modified: Wed Jul 20 09:17:58 2016, from Unix
Second
Run Code Online (Sandbox Code Playgroud)
(我有脚本和文件在同一目录中)
脚本:
#!/bin/bash
file = $1
if [[ $file == *.gz ]];then
echo "First"
else
echo "Second"
fi
Run Code Online (Sandbox Code Playgroud) 大家好
目的:检查文件中是否存在字符串并相应地运行操作
if [ -z 'sudo cat /etc/sudoers | grep "$USER ALL=(ALL) NOPASSWD:ALL"' ]; echo "no output, cont." || echo "line exists, skipping"
Run Code Online (Sandbox Code Playgroud)
在行存在和不存在的情况下,输出始终显示“行存在,跳过”。
将输出添加到变量中,例如 x,用变量替换 if 语句中的行会产生正确的输出,
如何“跳过”可变路由并直接运行命令?
我正在尝试构建一个脚本来自动执行现有数据库的备份过程。
我遇到的问题是将mysqldump数据库密码传递给命令(见下文),该密码有两个由空格分隔的单词。
# database credentials
DATABASEHOST="localhost"
DATABASEUSER="username"
DATABASEPASSWORD="Compound Password"
DATABASESCHEMA="schema"
# Local directory of mysqldump file
LOCALDIR=/home/user/db-bkp
#--- end config
mysqldump --host=$DATABASEHOST --user=$DATABASEUSER --password=$DATABASEPASSWORD $DATABASESCHEMA > $LOCALDIR/`date +%Y%m%d`_bkp_$DATABASESCHEMA.sql
Run Code Online (Sandbox Code Playgroud)
当我运行脚本时,相关的mysqldump相关消息是:
mysqldump: Got error: 1045: "Access denied for user 'username'@'localhost' (using password: YES)" when trying to connect
我在这里做错了什么以及如何解决它?
下面是我的程序,a.sh:
A=10 B=20 C=0 D=1
for var in {A,B,C,D}
do
if [ $var = 0 ]
then
echo "$var value is 0"
else
echo "Ok"
fi
done
Run Code Online (Sandbox Code Playgroud)
结果是:
# sh a.sh
Ok
Ok
0 value is 0 <==== Instead of this I want "C value is 0"
Ok
Run Code Online (Sandbox Code Playgroud)
我们应该怎么做 ?
在下面的示例脚本中,它用于发送到一个或两个电子邮件地址,具体取决于哪个进程正在使用该脚本。我需要为额外的电子邮件地址添加 3 美元,还是 2 美元就足够了?
(
for file in /usr/app/tst/$1/MS_CASE_ST*.csv;
do
uuencode ${file} $(basename ${file})
done
) | mailx -s "MS_CASE_ST*.csv file contains data. Please Research" $2
Run Code Online (Sandbox Code Playgroud)
脚本 example.sh 如何执行的示例:
$ ./example.sh output email-1@web.com email-2@web.com
Run Code Online (Sandbox Code Playgroud)