引用Bash参考手册和man bash(版本4.3):
[n]<<< word在
word经历括号扩展,波浪线扩展,参数和变量扩展,命令替换算术扩展和引用的去除.不执行路径名扩展和单词拆分.
本word不应该发生的字分裂.但是,使用这个简单的代码:
var="a b"
cat <<< $var
#output:
#a b
cat <<< "$var"
#output:
#a b
Run Code Online (Sandbox Code Playgroud)
我错过了什么?这取决于手册的版本bash或是否存在错误?我在用GNU bash, version 4.3.48.
如果在shell脚本中我写
chroot /home/mayank/chroot/codebase
cd SBC
Run Code Online (Sandbox Code Playgroud)
当我运行这个 shell 脚本时,它确实进入chroot但不执行命令cd SBC,当我退出时chroot它会执行cd SBC。
如何通过 shell 脚本实现某些功能chroot并执行命令chroot?
我正在尝试使用 Firebase 身份验证实现使用 Apple 登录。我正在关注firebase/quickstart-android示例。
我的登录片段覆盖onStart()以检查任何未决结果:
override fun onStart() {
super.onStart()
val pending = auth.pendingAuthResult
pending?.addOnSuccessListener { authResult ->
Timber.d("Successful login, pending")
}?.addOnFailureListener { e ->
Timber.d("Failed login, pending")
}
}
Run Code Online (Sandbox Code Playgroud)
以及启动登录流程的按钮:
btnApple.onClick {
viewModel.appleLogin(requireActivity())
}
Run Code Online (Sandbox Code Playgroud)
viewModel 从存储库调用以下方法:
// Initiate sign-in flow only if there are no pending results
if (auth.pendingAuthResult != null) {
return
}
val scopes = listOf("email", "name")
val provider = OAuthProvider.newBuilder("apple.com", auth)
.setScopes(scopes)
.build()
auth.startActivityForSignInWithProvider(activity, provider)
.addOnSuccessListener { authResult -> …Run Code Online (Sandbox Code Playgroud) android kotlin firebase firebase-authentication apple-sign-in
选项-O file用于将wget输出输出到特定的file.
为什么wget -O- "$url"输出到stdout?-O-中没有这样的表达man wget。为什么第二个字符-意味着-O-下载"$url"并将其输出到标准输出?
我需要将和之间的每个字符替换为:axxzzhello
#input
a xxab abzz ca xxbczz aaa axxazza xxczzaxxczz
#output
a xxhellob hellobzz ca xxbczz aaa axxhellozza xxczzaxxczz
Run Code Online (Sandbox Code Playgroud)
这适用于一对,不适用于更多对(它替换第一个和最后一个之间的xx/zz每个):axxzz
sed -r ':rep; s/(xx.*)a(.*zz)/\1hello\2/; trep'
Run Code Online (Sandbox Code Playgroud)
我认为最好的方法是使用更高级的正则表达式,例如perl.
我正在寻找bash、sed、awk或的解决方案perl。使用基本/扩展正则表达式是否可以完成此任务?当配对具有更多字符(例如xxxxxx/zzzzzz)时,不会变得难以理解的解决方案是首选。
我需要找到大量文件(空分隔的项目data2,data3存在于...) data1.完全匹配是必需的.
一切都很好用,grep -f data1 data2 data3 ...直到所有项目data1也为空分隔.
仅使用换行符 - 好的:
$ cat data1
1234
abcd
efgh
5678
$ cat data2
1111
oooo
abcd
5678
$ grep -xFf data1 data2
abcd
5678
Run Code Online (Sandbox Code Playgroud)data2-包含null分隔的项目确定时-z:使用
$ printf '1111\0oooo\0abcd\0005678' > data2
$ grep -zxFf data1 data2 | xargs -0 printf '%s\n'
abcd
5678
Run Code Online (Sandbox Code Playgroud)现在,这两个data1和data2包含空分隔的项目- 失败.似乎该-z选项不适用于指定的文件-f:
$ printf '1234\0abcd\0efgh\0005678' > …Run Code Online (Sandbox Code Playgroud)我有一个简单的屏幕,带有TextField. 其上方和下方各有一份信息文本。这些信息文本仅在满足特定条件时才会显示。
最小的例子:
class FooPage extends StatefulWidget {
const FooPage({Key? key}) : super(key: key);
@override
State<StatefulWidget> createState() {
return FooState();
}
}
class FooState extends State<FooPage> {
TextEditingController controller = TextEditingController();
bool show = true;
@override
void initState() {
super.initState();
controller.addListener(() {
setState(() => show = controller.text.length < 5);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
show ? const Text("hello1") : const SizedBox.shrink(),
TextField(controller: controller),
show ? const Text("hello2") : const SizedBox.shrink(), …Run Code Online (Sandbox Code Playgroud) 我的输入如下:
INa.aa ................... 2010年10月,此前美国业主未能偿还债务
我的目标是在以letter i/ 开头的每个单词周围加上括号I.所以我发出了一个命令:
sed 's/\<i[^[:blank:]]*\>/(&)/gi' input_data
Run Code Online (Sandbox Code Playgroud)
哪个返回了这个输出:
(INa.aa)................... 2010年10月之后(以前)美国的所有者未能偿还债务
我没有得到的是,为什么不^[:blank:]*包括之后的点INa.aa?
谢谢你的任何建议.