标签: scripting

简单的bash shell脚本确保提供两个参数

我正在尝试用bash编写简单的问候语脚本,以确保用户提供至少两个参数.1)第一个参数提供了在打印问候语之前我们想要延迟多长时间.2)第二个参数提供了我们想要显示的消息.对不起,我是shell脚本的新手.

#!/bin/sh
if[$# -ge 2]
then
   sleep $1
   shift
   banner $*
else
   echo "Usage: Greeing seconds word(s)"
fi
Run Code Online (Sandbox Code Playgroud)

bash shell scripting

0
推荐指数
1
解决办法
59
查看次数

在矩阵中查找小于另一个数字的最大数字

假设我有一个矩阵X,我想得到X中最大值的行数和列数小于数字y.我应该如何在MATLAB中这样做呢?

scripting matlab

0
推荐指数
1
解决办法
55
查看次数

在Perl中提取字符串中的所有正整数和负整数

我想使用Perl提取字符串中的所有正整数和负整数.该字符串包含以下字符和空格 - ,{}

例如:

$a = "{ { 0,256,0,0 },{ -2,256,2,0 },{ -4,256,4,0 },{ -6,255,7,0 }
     ,{ -7,254,10,-1 },{ -8,252,13,-1 },{ -10,251,16,-1 }
     ,{ -10,249,19,-2 },{ -12,247,23,-2 },{ -14,245,27,-2 }
     ,{ -14,242,31,-3 },{ -15,239,35,-3 },{ -15,236,39,-4 }
     ,{ -16,233,44,-5 },{ -17,230,48,-5 },{ -17,226,53,-6 }
     ,{ -18,222,58,-6 },{ -18,218,63,-7 }";
Run Code Online (Sandbox Code Playgroud)

我的o/p应该是@b包含0,256,0,0,-2,256,2,0 ......等数组的数组

我尝试了以下命令,但space/null元素也添加到我的o/p数组中.

my @b = split (/[,{}\s]/,$a);
Run Code Online (Sandbox Code Playgroud)

scripting perl

0
推荐指数
1
解决办法
95
查看次数

过滤文件内容以从PowerShell中的另一个文件中排除所有具有匹配字符串的行

我需要过滤变量的内容,以将所有具有匹配字符串的行从SubnetExceptions.txt文件中排除,作为过滤器,就像一条grep -v命令一样。

$Value为了获得所需的格式,该变量经过了很多处理。

该代码的工作部分如下:

$Value=netsh dhcp server show mibinfo | findstr "Subnet Addresses"
$Value=$Value -replace "Subnet","% `n Subnet"
$Value=$Value -replace "No. of Addresses in use","AddressesInUse"
$Value=$Value -replace "No. of free Addresses","AddressesFree"
$Value=$Value -replace '^.|.$', ' '
$Value=$Value -replace '    ', ""
$Value=$Value -replace '  ', " "
$Value= -join $Value 
$Value=$Value -replace '\n', ''
$Value=$Value -replace "% ", "`n"
$Value=$Value -replace ' = ', '='
Run Code Online (Sandbox Code Playgroud)

ps1的前11行$Value从以下命令处理该命令的输出():

    子网= 10.1.8.0。
        正在使用的地址数= 11。
        免费地址数= 18。
    子网= …

powershell scripting replace windows-scripting

0
推荐指数
1
解决办法
1002
查看次数

如何回显数学表达式的结果并将其保存到Bash中的变量中

我需要将以下等式回显到命令行,并保存到变量中.到目前为止,我都没有做到.

5 ^ 0.16

我试过了什么

echo 'e(l(5)*.16)' | bc -l
Run Code Online (Sandbox Code Playgroud)

以及

echo 'e(l(5)*.16)' | bc -l | read wcEXP
Run Code Online (Sandbox Code Playgroud)

bash shell scripting

0
推荐指数
1
解决办法
140
查看次数

从elixir中的exs文件中运行exs文件

我想运行两个elixir脚本,first.exssecond.exs.我想第二个也先跑.什么是一个很好的方式来运行它?

例如,代码可能如下所示:

first.exs

IO.puts "first"
Run Code Online (Sandbox Code Playgroud)

second.exs

IO.puts "second"
System.cmd("mix run first.exs")
Run Code Online (Sandbox Code Playgroud)

并输出这样的东西:

mix run first.exs
first

mix run second
first
second
Run Code Online (Sandbox Code Playgroud)

我想避免使用System.cmd,Mix尽可能使用该模块

scripting elixir

0
推荐指数
1
解决办法
1171
查看次数

source命令不使用变量或带引号的字符串

我遇到了这个问题.

如果我做...

source /Users/cristian/Proyectos/MikroTik\ Updater/sources/testfile
Run Code Online (Sandbox Code Playgroud)

它确实有效

如果我做...

source "/Users/cristian/Proyectos/MikroTik\ Updater/sources/testfile"
Run Code Online (Sandbox Code Playgroud)

它没有

问题是我正在使用一个变量,其中包含一个前面有一些步骤的路径

所以这...

mypath="/Users/cristian/Proyectos/MikroTik\ Updater/sources/testfile"
source $mypath
Run Code Online (Sandbox Code Playgroud)

不起作用

我发现了一个解决方法...

eval "source $mypath"
Run Code Online (Sandbox Code Playgroud)

但当然这是一个很大的安全漏洞,因为文件名来自一个参数

我能做什么?

编辑:

正如您在代码中看到的,我回显文件名,然后尝试获取它

updaterpath="$( cd "$(dirname "$0")" ; pwd -P | sed  's/ /\\ /g' )"
sourcefile="$updaterpath/sources/$1"

echo $sourcefile
source $sourcefile
Run Code Online (Sandbox Code Playgroud)

在输出中,我得到了正确的路径回显,并source说出它的错误不存在!有趣的是,无论我cat是那个文件,我都可以看到内容,所以文件路径是正确的!

/Users/cristian/Proyectos/MikroTik\ Updater/sources/testfile
/Users/cristian/Proyectos/MikroTik Updater/updater.sh: line 7: /Users/cristian/Proyectos/MikroTik\: No such file or directory
Run Code Online (Sandbox Code Playgroud)

bash scripting

0
推荐指数
1
解决办法
456
查看次数

如何排毒BASH输入或变量?

我目前使用的(tr -d ' ' <<< "$LOC1")排毒 (变位到\ /等)的文件路径.这不能很好地工作,因为它只删除空格而不是正确格式化"File\ path/".由于变量$ LOC1可以包含不同的路径,因此需要"适应".

我找不到任何允许使用"灵活"文件路径/变量的解决方案.所以我谦虚地问这里.

我开始学习如何"编写脚本"?昨天请原谅我,如果我不能说清楚的话.

 #!/bin/bash

LOC1=$(zenity --file-selection --directory --title="Select first directory")

LOC2=$(zenity --file-selection --directory --title="Select second direcotry")
LOC1=$(tr -d ' ' <<< "$LOC1")
LOC2=$(tr -d ' ' <<< "$LOC2")
clear
rsync -r --info=progress2 --delete-excluded $LOC1 $LOC2
read -n 1 -s -r -p "Your back-up is complete, Press any key to exit..."
Run Code Online (Sandbox Code Playgroud)

提前致谢!

编辑:问题是zenity为用户输入选择目录但不删除该目录路径中的空格.它将输出例如:/media/productivity/Seagate backup A/Back-up而不是/media/productivity/Seagate\ backup\ A/Back-up

如何使脚本排除文件路径而不知道将有多少个空格?

linux bash shell scripting

0
推荐指数
1
解决办法
100
查看次数

将变量设置为另一个变量的内容

我试图创建一个基本上"模拟"变量的程序.

我尝试使用以下代码测试此问题:

@echo off
set a=b
set b=c
:: The program should echo %b% because it is expanded with double percentages
echo %%a%%
Run Code Online (Sandbox Code Playgroud)

程序只回显"%% a %%",而不是扩展到%b%,这应该导致程序回显C.

我究竟做错了什么?

windows scripting batch-file

0
推荐指数
1
解决办法
46
查看次数

运行命令集并返回错误代码(如果有任何失败)

在nodejs项目中,我有一个yarn lint以这种方式运行几个短接的快捷方式:

lint_1 && lint_2 && lint_3
Run Code Online (Sandbox Code Playgroud)

如果其中任何一个发现错误,则返回错误代码,因此结果yarn lint本身会返回错误代码,因此构建失败.

虽然存在一个小问题,但它可以正常工作,捕获所有错误:如果一个linter失败并显示错误代码 - 其余的linters将不会被执行.

我想要的 - 执行所有这些(所以他们都打印所有错误),然后才失败.

我知道我可以创建一个bash脚本(我将运行yarn lint),逐个运行每个linters收集返回码,然后检查是否有任何代码非零 - exit 1并且它将失败yarn lint.但我想知道有更优雅的方式吗?

bash shell scripting continuous-integration automation

0
推荐指数
1
解决办法
103
查看次数