标签: scripting

如何判断Bash中是否存在常规文件?

我使用以下脚本来查看文件是否存在:

#!/bin/bash

FILE=$1     
if [ -f $FILE ]; then
   echo "File $FILE exists."
else
   echo "File $FILE does not exist."
fi
Run Code Online (Sandbox Code Playgroud)

如果我只想检查文件是否存在,使用的语法是什么?

#!/bin/bash

FILE=$1     
if [ $FILE does not exist ]; then
   echo "File $FILE does not exist."
fi
Run Code Online (Sandbox Code Playgroud)

bash scripting file-io

3069
推荐指数
18
解决办法
241万
查看次数

如何在Bash中的分隔符上拆分字符串?

我把这个字符串存储在一个变量中:

IN="bla@some.com;john@home.com"
Run Code Online (Sandbox Code Playgroud)

现在我想通过;分隔符拆分字符串,以便我有:

ADDR1="bla@some.com"
ADDR2="john@home.com"
Run Code Online (Sandbox Code Playgroud)

我不一定需要ADDR1ADDR2变量.如果它们是阵列的元素甚至更好.


根据以下答案的建议,我最终得到了以下内容,这就是我所追求的:

#!/usr/bin/env bash

IN="bla@some.com;john@home.com"

mails=$(echo $IN | tr ";" "\n")

for addr in $mails
do
    echo "> [$addr]"
done
Run Code Online (Sandbox Code Playgroud)

输出:

> [bla@some.com]
> [john@home.com]
Run Code Online (Sandbox Code Playgroud)

有一个涉及设置Internal_field_separator(IFS)的解决方案;.我不确定该答案发生了什么,你如何重置IFS为默认值?

RE:IFS解决方案,我试过这个并且它可以工作,我保持旧的IFS然后恢复它:

IN="bla@some.com;john@home.com"

OIFS=$IFS
IFS=';'
mails2=$IN
for x in $mails2
do
    echo "> [$x]"
done

IFS=$OIFS
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我试过的时候

mails2=($IN)
Run Code Online (Sandbox Code Playgroud)

我只是在循环打印时得到第一个字符串,没有括号围绕$IN它工作.

bash shell scripting split

1885
推荐指数
22
解决办法
204万
查看次数

如果目录尚不存在,如何mkdir?

我正在编写一个shell脚本,在AIX上的KornShell(ksh)下运行.我想使用该mkdir命令创建一个目录.但目录可能已经存在,在这种情况下我不想做任何事情.因此,我想测试以查看该目录不存在,或者抑制在mkdir尝试创建现有目录时抛出的"File exists"错误.

有关如何最好地做到这一点的任何想法?

shell scripting aix ksh mkdir

1784
推荐指数
16
解决办法
104万
查看次数

如何在Bash中解析命令行参数?

说,我有一个用这行调用的脚本:

./myscript -vfd ./foo/bar/someFile -o /fizz/someOtherFile
Run Code Online (Sandbox Code Playgroud)

或者这个:

./myscript -v -f -d -o /fizz/someOtherFile ./foo/bar/someFile 
Run Code Online (Sandbox Code Playgroud)

什么是分析这使得在每一种情况下(或两者的组合)的接受的方式$v,$f以及 $d将全部设置为true$outFile将等于/fizz/someOtherFile

bash scripting command-line arguments getopts

1764
推荐指数
24
解决办法
136万
查看次数

如何在Linux shell脚本中提示是/否/取消输入?

我想在shell脚本中暂停输入,并提示用户进行选择.标准的"是,否或取消"类型问题.如何在典型的bash提示符中完成此操作?

linux bash shell scripting

1352
推荐指数
25
解决办法
94万
查看次数

如何计算文档中的行?

我有这样的线条,我想知道我实际上有多少行......

09:16:39 AM  all    2.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   94.00
09:16:40 AM  all    5.00    0.00    0.00    4.00    0.00    0.00    0.00    0.00   91.00
09:16:41 AM  all    0.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:42 AM  all    3.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:43 AM  all    0.00    0.00    1.00    0.00    1.00    0.00    0.00    0.00   98.00
09:16:44 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
09:16:45 AM  all    2.00    0.00    6.00    0.00 …
Run Code Online (Sandbox Code Playgroud)

linux bash scripting command-line

994
推荐指数
15
解决办法
125万
查看次数

如何在shell脚本中声明和使用布尔变量?

我尝试使用以下语法在shell脚本中声明一个布尔变量:

variable=$false

variable=$true
Run Code Online (Sandbox Code Playgroud)

它是否正确?另外,如果我想更新该变量,我会使用相同的语法吗?最后,使用布尔变量作为正确的表达式是以下语法:

if [ $variable ]

if [ !$variable ]
Run Code Online (Sandbox Code Playgroud)

bash shell scripting boolean sh

884
推荐指数
14
解决办法
84万
查看次数

如何运行PowerShell脚本

如何运行PowerShell脚本?

  • 我有一个名为myscript.ps1的脚本
  • 我已经安装了所有必要的框架
  • 我设置了执行策略的东西
  • 我已按照此MSDN帮助页面上的说明操作, 并尝试按以下方式运行:( powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'有或没有--noexit)

除了输出文件名外,它什么都不返回.

没有错误,没有消息,没有.哦,当我添加时-noexit,同样的事情发生了,但我仍然在PowerShell中,必须手动退出.

.ps1文件应该运行程序并返回依赖于该程序输出的错误级别.但我很确定我还没有到达那里.

我究竟做错了什么?

windows powershell scripting

662
推荐指数
13
解决办法
166万
查看次数

在Bash脚本中,如果出现某种情况,如何退出整个脚本?

我正在用Bash编写一个脚本来测试一些代码.但是,如果首先编译代码失败,运行测试似乎很愚蠢,在这种情况下,我只是中止测试.

有没有办法可以在没有将整个脚本包含在while循环中并使用中断的情况下执行此操作?有点像dun dun dun goto?

bash scripting exit-code exit

641
推荐指数
6
解决办法
60万
查看次数

如何比较Bash中'if'语句中的两个字符串变量?

我正在尝试使用Bash(使用Ubuntu)获得一个if声明:

#!/bin/bash

s1="hi"
s2="hi"

if ["$s1" == "$s2"]
then
  echo match
fi
Run Code Online (Sandbox Code Playgroud)

我尝试了各种形式的if语句,使用[["$s1" == "$s2"]],有和没有引号,使用=,==-eq,但我仍然得到以下错误:

[hi:命令未找到

我查看了各种网站和教程并复制了这些内容,但是它不起作用 - 我做错了什么?

最后,我想说是否$s1包含$s2,所以我该怎么做?

我刚刚解决了空位...:/我怎么说包含?

我试过了

if [[ "$s1" == "*$s2*" ]]
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

bash scripting if-statement

572
推荐指数
11
解决办法
102万
查看次数