我正在尝试用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) 假设我有一个矩阵X,我想得到X中最大值的行数和列数小于数字y.我应该如何在MATLAB中这样做呢?
我想使用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) 我需要过滤变量的内容,以将所有具有匹配字符串的行从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。
子网= … 我需要将以下等式回显到命令行,并保存到变量中.到目前为止,我都没有做到.
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) 我想运行两个elixir脚本,first.exs和second.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尽可能使用该模块
我遇到了这个问题.
如果我做...
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) 我目前使用的(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
如何使脚本排除文件路径而不知道将有多少个空格?
我试图创建一个基本上"模拟"变量的程序.
我尝试使用以下代码测试此问题:
@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.
我究竟做错了什么?
在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.但我想知道有更优雅的方式吗?
scripting ×10
bash ×5
shell ×4
automation ×1
batch-file ×1
elixir ×1
linux ×1
matlab ×1
perl ×1
powershell ×1
replace ×1
windows ×1