我在同一个文件夹中有两个Bash脚本(由下载整个存储库的用户保存在某处):
script.sh 由用户运行helper.sh 是必需的并且由 script.sh这两个脚本应该位于同一目录中.我需要第一个脚本来调用第二个脚本,但有两个问题:
/usr/bin/script.sh,with ./script.sh或者它可能是../Downloads/repo/scr/script.sh)script.sh在调用之前,脚本将更改为其他目录helper.sh.我绝对可以通过将当前目录存储在一个变量中来实现这一目的,但是该代码似乎不必要地复杂化,因为我认为这是一个非常常见且简单的任务.
有可靠的helper.sh内部可靠呼叫方式script.sh吗?并且可以在任何支持Bash的操作系统中使用吗?
我已经在StackOverflow中解决了一些关于此的问题,但在我的情况下没有任何帮助.
我想限制用户提供应该只包含字母数字字符,文件名-,_,.和空间.
我对正则表达式并不擅长,到目前为止我想出了这个^[a-zA-Z0-9.-_]$.有人能帮助我吗?
其中的这些会给出恰好当随机值在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 inclusive和1 exclusive.
我们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/jpeg或application/octet-stream)是"编码"或部分内以某种方式"逃"的信息?
或者开发人员是否应始终搜索文件的内容以获取边界,然后反复继续选择一个新的随机生成的边界,直到在文件中找不到所选的字符串?
JavaScript可以处理以下数学:
var result = (20000000 * 48271) % 0x7FFFFFFF;
Run Code Online (Sandbox Code Playgroud)
但是在某些编程语言中,第一次int*int乘法导致的值太大而无法保存在标准的32位整数中.有没有办法在JavaScript中"模拟"这个,并看看如果乘法导致整数溢出,结果计算会是什么?
我正试图按照我的意愿修改我的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中的三元运算符(?:)
如果这是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 中编写带有变量赋值的内联?
我有一个定义的函数.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(或最后一个"真实"命令的输出),即使我所做的只是按下返回按钮而没有实际执行命令(示例输出).
如果命令实际运行,我怎么能让脚本只显示消息?
如何~在Ubuntu中的特定文件夹中以递归方式删除所有备份文件,即以文件结尾的文件?
任何编程语言的脚本都可以.
我听说GitHub页面支持少量列入白名单的Jekyll插件,但我似乎无法在任何地方找到全面的列表.
哪里可以找到这些信息?