我的问题:
#!/bin/bash
function testFunc(){
echo "param #1 is :" $1
echo "param #2 is :" $2
}
param1="param1"
param2="param2"
testFunc $param1 $param2
Run Code Online (Sandbox Code Playgroud)
这样输出是:
param #1 is : param1
param #2 is : param2
Run Code Online (Sandbox Code Playgroud)
但是当我将param1设置为空字符串时:
param1=""
Run Code Online (Sandbox Code Playgroud)
然后输出如下:
param #1 is : param2
param #2 is :
Run Code Online (Sandbox Code Playgroud)
我想问题是当第一个参数为空时,它没有被声明,所以它实际上不会作为函数参数传递.
如果这是问题,那么有没有办法在bash中声明变量"空字符串",或者是否有任何解决方法来获得预期的行为?
注意:如果我调用这样的函数,它按预期工作:
testFunct "" $param2
Run Code Online (Sandbox Code Playgroud)
但我想保持代码清洁.
更新:
我最近发现-u了一个标志,如果即将使用未绑定的变量,它会引发错误.
$ bash -u test.sh
param #1 is : param1
test.sh: line 5: $2: unbound variable
Run Code Online (Sandbox Code Playgroud) 如何设置我的crontab以在每天晚上11:59执行X脚本而不通过电子邮件发送或创建任何日志?
现在我的crontab看起来像这样
@daily /path/to/script.sh
Run Code Online (Sandbox Code Playgroud) 我有很多年来编写的大量php文件,我需要将所有短开标签正确替换为正确的显式开放标签.
change "<?" into "<?php"
Run Code Online (Sandbox Code Playgroud)
我认为这个正则表达式将正确选择它们:
<\?(\s|\n|\t|[^a-zA-Z])
Run Code Online (Sandbox Code Playgroud)
照顾像这样的案件
<?//
<?/*
Run Code Online (Sandbox Code Playgroud)
但我不知道如何处理整个文件夹树并检测.php文件扩展名并应用正则表达式并在文件更改后保存.
如果你掌握了正确的工具,我觉得这可以非常简单.(sed手册中有一个有趣的黑客:4.3示例/将文件重命名为小写).
也许我错了.
或许这可能是一个oneliner?
我这里有两台Linux(CentOS 6.0)机器,我需要在当前日期时间内添加(或删除)5秒钟.最后,我的两台机器都会有5秒的间隙(一个是正确的时间,另一个是5秒或多或少).
我知道我可以使用此命令更改日期:
date -s "DD MMM YYYY HH:MM:SS"
Run Code Online (Sandbox Code Playgroud)
但我需要精确,我很难在合适的时间运行命令.
所以我想知道是否有一种方法可以在当前时间增加5秒,有点像你选择时区而不是格林威治(在我的情况下是+5小时).
我想将所有文件上传到一个目录中,我知道如何使用curl上传一个文件,如下所示:
curl -T "local/xxx.suffix" -u xxx:psw "ftp://192.168.1.158/public/demon_test/xxx.suffix"
Run Code Online (Sandbox Code Playgroud)
如何将当前目录中的所有文件(子目录)上传到FTP服务器?
我想在bash中执行以下操作,但没有插入变量:
cat >aBashScript.sh <<EOL
$name
EOL
Run Code Online (Sandbox Code Playgroud)
该文件应包含'$ name',但它是空的.怎么做到这一点?
我要求在XSL文件中处理不超过两个相同字母/数字的正则表达式.
BBB将失败,BB被接受)到目前为止我有什么
(?:[^a-zA-Z0-9]{1,2})
Run Code Online (Sandbox Code Playgroud) 假设我想从2个远程服务聚合数据,并尽可能快地提供响应:
def loadUser: Future[User]
def loadData: Future[Data]
case class Payload(user: User, data: Data)
Run Code Online (Sandbox Code Playgroud)
我知道这个顺序执行异步任务:
for {
user <- loadUser
data <- loadData
} yield Payload(user,data)
Run Code Online (Sandbox Code Playgroud)
虽然这个并行执行它们,因为异步任务在顺序链接之前被触发:
val userF = loadUser
val dataF = loadData
for {
user <- userF
data <- dataF
} yield Payload(user,data)
Run Code Online (Sandbox Code Playgroud)
然而,差异对我来说有点过于含蓄,有些人可能最初没有注意到它.
申请人也解决了这个问题
(loadUser |@| loadData) { Payload(_,_) }
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我在应用程序和monad之间使用什么来执行并行异步计算吗?每种方法的优缺点是什么?
我有三种类型的字符串,我想在bash脚本中大写.我认为sed/awk是我最好的选择,但我不确定.考虑到以下要求,最好的方法是什么?
单词
例如 taco -> Taco
由连字符分隔的多个单词,
例如 my-fish-tacos -> My-Fish-Tacos
由下划线分隔的多个单词,
例如 my_fish_tacos -> My_Fish_Tacos
我试过打印"狗是最棒的".用这个bash脚本.
#!/bin/bash
ANIMAL="Dog"
echo "$ANIMALs are the best."
exit
Run Code Online (Sandbox Code Playgroud)
但是,我得到了"最好的".打印出来,因为sin $ANIMALS没有与变量分开.我该如何分开?