假设someuser有一个主目录/ home/someuser
NAME = SomeUser的
在bash中 - 我用什么表达式组合使用tilde(〜)和$ NAME来返回用户主目录?
HOMEDIRECTORY=~someuser
echo $HOMEDIRECTORY
/home/someuser
NAME=someuser
echo ~$NAME
~someuser
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我有一个bash脚本,我使用$检查上次运行命令的退出代码?变量,但现在我正在执行一个C程序(从该脚本),如果程序成功执行,它返回0.有什么方法可以在我的bash脚本中捕获C程序的返回值吗?
我相信不同的命令,如awk,sed等都是用C语言编写的.他们如何使用$?将退出代码存储在其中?如何让我的C程序将其退出代码存储在$ ??
我希望我的问题很明确.
所以我从命令行调用这个PHP脚本:
/usr/bin/php /var/www/bims/index.php "projects/output"
Run Code Online (Sandbox Code Playgroud)
它的输出是:
file1 file2 file3
Run Code Online (Sandbox Code Playgroud)
我想要做的是获取此输出并提供给"rm"命令但我认为我做得不对:
/usr/bin/php /var/www/bims/index.php "projects/output" | rm
Run Code Online (Sandbox Code Playgroud)
我的目标是删除PHP脚本输出的任何文件名.应该怎样做才能做到这一点?
谢谢!
我正在尝试创建一个守护进程来对我的数据库进行非规范化。
我使用ActiveMQ作为队列管理器,我有2个数据库:关系数据库(写+复制)和非规范化数据库(用于读取)
我的问题是对我的真实数据库进行非规范化的最佳实践是什么,我有一些想法:
我目前正在为一家公司开发一个MVC Style框架,出于安全考虑,我需要确保通过Query String传递的控制器/方法是RFC的有效字符(我找不到).
我需要能够根据PHP解释器允许的内容来验证/清理类名
例如:
class SomEFunk__YClAssName extends Controller
{
}
Run Code Online (Sandbox Code Playgroud)
我需要某种正则表达式来验证SomEFunk__YClAssName和消毒它,如果需要的话!这也是与方法相同的原则.
有一些事情需要考虑,比如
关于这个或可能表达的任何信息都会非常有用.
这是我的一些路由器代码,因此您可以看到我需要实现它的位置:
private function prepareQueryString()
{
if(strlen($this->query_string) == 0)
{
return;
}
//Remove [ending|starting|multiple] slashes
$this->query_string = preg_replace('/^\/+|\/+$|\/(?=\/)/', '', $this->query_string);
foreach(explode('/',$this->query_string) as $Key => $Value)
{
if($Key == 0)
{
$Controller = $this->AssignController($Value);
}
if($Key == 1)
{
$this->AssignMethod($Value);
}else
{
$this->AssignParam($Value);
}
}
//Build RouterVar stdClass
}
public function AssignController(String $Controller)
{
if(!empty($Controller))
{
//Sanitize
}
}
public function AssignMethod(String $Method) …Run Code Online (Sandbox Code Playgroud) 我awk用于格式化输出文件中的输入文件.我有几种模式来填充变量(例如示例中的"某些模式").这些变量以END块中所需的格式打印.输出必须在那里完成,因为输入文件中的外观顺序不能保证,但输出文件中的顺序必须始终相同.
BEGIN {
FS = "=|,"
}
/some pattern/ {
if ($1 == 8) {
var = $1
} else {
# Incorrect field value
exit 1
}
}
END {
# Output the variables
print var
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是exit模式中的陈述.如果存在某些错误并且调用了此命令,则根本不应该输出或者最多没有错误消息.但正如gawk手册(这里)所说,如果exit在模式块中调用该命令,则END至少会执行该块.有没有办法赶上exit这样的:
if (!exit_invoked) {
print var
}
Run Code Online (Sandbox Code Playgroud)
或其他一些方法来避免在END块中打印输出?
斯特凡
编辑:使用shellter的解决方案.
我正在使用awk脚本,同样的骨架很简单
awk '
BEGIN {
Variable declaration
}
{
ACTION PART
}
END
{
}' FILE A
Run Code Online (Sandbox Code Playgroud)
文件A是如此庞大的文件.所以我不想遍历整个文件,所以我想要做的是,我试图在ACTION PART中保留一些检查,如果检查成功,那么我需要跳过阅读其余部分该文件并直接转到END部分.
我的问题是如何根据条件将脚本从ACTION PART重定向到END Part ..我正在寻找某种类似命令,如for循环中的"break".你能和人分享你的想法吗?谢谢.
我想知道一些转义序列做了什么,包括以下内容:
\b backspace
\f form feed
\n new line
\r carriage return
\t tab
Run Code Online (Sandbox Code Playgroud)
另外,换页、换行和回车有什么区别?\t 和空格有什么区别?他们都长得一样……
从ksh终端运行md5函数与简单的Perl脚本的输出不匹配.
在终端我运行:
echo -n abc | md5
62fecf21103616856d72e6ffc9bcb06b
Run Code Online (Sandbox Code Playgroud)
如果我使用Perl运行它:
use Digest::MD5 qw(md5_hex);
foreach (@ARGV) {
print "Digest is ", md5_hex($_), "\n";
}
exit
Run Code Online (Sandbox Code Playgroud)
我明白了
./perl_test.sh abc
Digest is 900150983cd24fb0d6963f7d28e17f72
Run Code Online (Sandbox Code Playgroud)
在我看到的所有示例和md5函数本身的示例中,Perl看起来正确,但仅使用Ksh 的示例不是:
md5 -x
MD5 test suite:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
Run Code Online (Sandbox Code Playgroud) 在我编写的Python程序中,我使用for循环和增量变量与列表理解进行比较,map(itemgetter)并len()计算列表中字典中的条目.使用每种方法需要相同的时间.我做错了什么还是有更好的方法?
这是一个大大简化和缩短的数据结构:
list = [
{'key1': True, 'dontcare': False, 'ignoreme': False, 'key2': True, 'filenotfound': 'biscuits and gravy'},
{'key1': False, 'dontcare': False, 'ignoreme': False, 'key2': True, 'filenotfound': 'peaches and cream'},
{'key1': True, 'dontcare': False, 'ignoreme': False, 'key2': False, 'filenotfound': 'Abbott and Costello'},
{'key1': False, 'dontcare': False, 'ignoreme': True, 'key2': False, 'filenotfound': 'over and under'},
{'key1': True, 'dontcare': True, 'ignoreme': False, 'key2': True, 'filenotfound': 'Scotch and... well... neat, thanks'}
]
Run Code Online (Sandbox Code Playgroud)
这是for循环版本:
#!/usr/bin/env python
# …Run Code Online (Sandbox Code Playgroud)