小编IQA*_*eas的帖子

在与当前脚本相同的目录中运行脚本

我在同一个文件夹中有两个Bash脚本(由下载整个存储库的用户保存在某处):

  • script.sh 由用户运行
  • helper.sh 是必需的并且由 script.sh

这两个脚本应该位于同一目录中.我需要第一个脚本来调用第二个脚本,但有两个问题:

  1. 知道当前的工作目录对我来说是无用的,因为我不知道用户是如何执行第一个脚本的(可能是with /usr/bin/script.sh,with ./script.sh或者它可能是../Downloads/repo/scr/script.sh)
  2. script.sh在调用之前,脚本将更改为其他目录helper.sh.

我绝对可以通过将当前目录存储在一个变量中来实现这一目的,但是该代码似乎不必要地复杂化,因为我认为这是一个非常常见且简单的任务.

可靠的helper.sh内部可靠呼叫方式script.sh吗?并且可以在任何支持Bash的操作系统中使用吗?

bash path filepath

39
推荐指数
3
解决办法
2万
查看次数

有效文件名的正则表达式

我已经在StackOverflow中解决了一些关于此的问题,但在我的情况下没有任何帮助.

我想限制用户提供应该只包含字母数字字符,文件名-,_,.和空间.

我对正则表达式并不擅长,到目前为止我想出了这个^[a-zA-Z0-9.-_]$.有人能帮助我吗?

c# regex

37
推荐指数
4
解决办法
6万
查看次数

你怎么得到50%的赔率?

其中的这些会给出恰好当随机值在0和1之间的浮动(如AS3的或JavaScript的50%的机会Math.random())?我已经看到它们都在实践中使用过:

if (Math.random() > 0.5) ...
if (Math.random() >= 0.5) ...
Run Code Online (Sandbox Code Playgroud)

抬头:我在这里很迂腐,因为在实践中,击球0.5确实是天文数字低.但是,我仍然想知道中间的位置0 inclusive1 exclusive.

javascript random actionscript-3

24
推荐指数
1
解决办法
2万
查看次数

如果表格数据边界包含在附件中怎么办?

我们multipart/form-data 来自w3.com的以下示例:

Content-Type: multipart/form-data; boundary=AaB03x

--AaB03x
Content-Disposition: form-data; name="submit-name"

Larry
--AaB03x
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain

... contents of file1.txt ...
--AaB03x--
Run Code Online (Sandbox Code Playgroud)

这很简单,但是假设您正在编写实现此功能的代码并从头开始创建这样的请求.假设file1.txt是由用户创建的,我们无法控制其内容.

如果文本文件file1.txt包含字符串--AaB03x怎么办?您可能AaB03x随机生成边界,但让我们假设"百万只猴子进入百万网络表单"场景.

有没有一种标准的方法来处理这种不可能但仍然可能的情况?

应该text/plain(或者甚至可能像image/jpegapplication/octet-stream)是"编码"或部分内以某种方式"逃"的信息?

或者开发人员是否应始终搜索文件的内容以获取边界,然后反复继续选择一个新的随机生成的边界,直到在文件中找不到所选的字符串?

forms http multipartform-data

12
推荐指数
1
解决办法
2120
查看次数

"模拟"JavaScript中的32位整数溢出

JavaScript可以处理以下数学:

var result = (20000000 * 48271) % 0x7FFFFFFF;
Run Code Online (Sandbox Code Playgroud)

但是在某些编程语言中,第一次int*int乘法导致的值太大而无法保存在标准的32位整数中.有没有办法在JavaScript中"模拟"这个,并看看如果乘法导致整数溢出,结果计算会是什么?

javascript integer-overflow

10
推荐指数
2
解决办法
2109
查看次数

如果远程运行,只在bash提示符中列出主机?

我正试图按照我的意愿修改我的Bash提示; 这就是$PS1目前的情况(为了清晰起见,编辑了颜色):

PS1='\u@\h:\w\$ '
Run Code Online (Sandbox Code Playgroud)

结果如下:

andreas@tablet-2710p-ubuntu:~$ 
Run Code Online (Sandbox Code Playgroud)

如果我在本地运行当前的Bash会话而不是访问远程服务器,我可以调整提示,以便隐藏@tablet-2710p-ubuntu位(由表示@\h)吗?

我还宁愿不硬编码(例如,只是替换任何出现的tablet-2710p-ubuntu)以便于移植,以及以后更改主机名.

bash ps1

9
推荐指数
2
解决办法
1488
查看次数

在bash中是否有内联(如果有)赋值(三元条件)?

可能重复:
Bash中的三元运算符(?:)

如果这是AS3或Java,我会做以下事情:

fileName = dirName + "/" + (useDefault ? defaultName : customName) + ".txt";
Run Code Online (Sandbox Code Playgroud)

但是在shell中,这似乎是不必要的复杂,需要几行代码,以及相当多的重复代码.

if [ $useDefault ]; then
    fileName="$dirName/$defaultName.txt"
else
    fileName="$dirName/$customName.txt"
fi
Run Code Online (Sandbox Code Playgroud)

你可以将这一切压缩成一行,但这极大地牺牲了清晰度.

有没有更好的方法if在shell 中编写带有变量赋值的内联?

bash shell if-statement operators

8
推荐指数
2
解决办法
1万
查看次数

检查上一个命令是否"有效"

我有一个定义的函数.bashrc,显示上一个命令是否成功完成(从完整版本简化):

function previous_command_status()
{
    if [ $? -eq 0 ]; then
        echo "Command successful"
    else
        echo "Command failed with exit code $exit_code"
    fi
}

PROMPT_COMMAND="previous_command_status"
Run Code Online (Sandbox Code Playgroud)

问题是,Command successful当我开始提示时立即显示,即使我还没有"正式"运行任何命令.第二个(并且出于同样的原因),脚本显示Command successful(或最后一个"真实"命令的输出),即使我所做的只是按下返回按钮而没有实际执行命令(示例输出).

如果命令实际运行,我怎么能让脚本只显示消息?

bash .bash-profile

8
推荐指数
1
解决办法
619
查看次数

使用Shell脚本递归删除Linux中的所有备份文件

如何~在Ubuntu中的特定文件夹中以递归方式删除所有备份文件,即以文件结尾的文件?

任何编程语言的脚本都可以.

linux bash shell ubuntu

7
推荐指数
1
解决办法
3275
查看次数

哪些Jekyll插件被GitHub页面列入白名单?

我听说GitHub页面支持少量列入白名单的Jekyll插件,但我似乎无法在任何地方找到全面的列表.

哪里可以找到这些信息?

github jekyll github-pages

7
推荐指数
1
解决办法
1222
查看次数